/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_Studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once

#include "A_引擎/引擎.h"
#include "A_引擎/文件工程/工程文件.h"



E_轴向		f_变换手柄_拾取(S_物体* 手柄, const vec2& 拾取坐标, const S_Rect2Df& rect, const vec3& s, const vec3& dir, const S_摄像机& camera);

bool		f_控制手柄_准备变换(bool 重启 = false);

void		f_变换_准备移动物体(S_物体* 手柄, bool 强制重启 = true);
void		f_变换_移动物体(const vec3& 手柄要移动到是位置);
S_Tranform	f_控制手柄_取消移动物体(bool 重置状态 = true);


void		f_控制手柄_准备旋转物体(S_物体* 手柄, const vec2& 鼠标局部位置, const S_Rect2Df& rect, S_摄像机* camera, bool 强制重启 = true);
S_Tranform	f_控制手柄_视线旋转物体(vec3 旋转向量, float32 角度, float32 方向);
void		f_控制手柄_局部旋转物体(E_轴向 轴向, float32 角度);
//void f_控制手柄_完成旋转物体();
S_Tranform f_控制手柄_取消旋转物体(bool 重置状态 = true);


void		f_控制手柄_准备缩放物体(S_物体* 手柄, const vec2& 鼠标局部位置, const S_Rect2Df& rect, S_摄像机* camera, bool 强制重启 = true);
S_Tranform	f_控制手柄_视线缩放物体(vec3 旋转向量, float32 步进);
void		f_控制手柄_局部缩放物体(E_轴向 轴向, float32 步进);
S_Tranform	f_控制手柄_全局缩放物体(E_轴向 轴向, float32 鼠标到中点距离);
S_Tranform	f_控制手柄_缩放物体(E_轴向 轴向, float32 步进);
//void f_控制手柄_完成缩放物体();
S_Tranform	f_控制手柄_取消缩放物体(bool 重置状态 = true);


void f_控制手柄_完成变换(E_变换 操作类型);



void f_视口控制_镜头视点移动到激活物体中心(S_摄像机& camera, const vec3& 中心);

//void f_控制手柄_变换手柄开关(E_变换 变换, bool 打开);
void f_控制手柄_轴线显示(E_轴向 轴向);
void f_控制手柄_移动到选中物体中心();

void f_控制手柄_置变换();

//void f_控制手柄_设置步进位置();
void	f_控制手柄_锁定步进位置(vec3& 步进位置, vec3 起点);
int32	f_控制手柄_旋转视线向量(S_摄像机* camera, vec3& 视线向量);

//void on_控制手柄切换(S_Props& prop);
//float32 f_控制手柄_设置大小(S_物体* 变换手柄, const S_摄像机& camera);









